Instruction Tuning
Instruction Fine Tuning(略してInstruction Tuning)はもともとFLANによって提案された。 LLMに、単一のタスクではなく、言語ベースのタスク全般を解く能力を向上させるトレーニングの形を提供するために考案。
肝はコレ「タスク記述+入力プロンプトをLLMに渡し、関連する出力を生成するよう求めるだけである」。
ただの特殊な教師あり学習。
色んなNLPタスクをちょこちょこ学習させると基盤モデルとしてのゼロショット汎化性能が強まるみたいなイメージを持った。
多様性を持たせるほど良い?
https://scrapbox.io/files/65e80530b1d71100240e86dd.png
まとめると、Instruction Tuningとは「タスクの指示文を入力に追加して訓練を行う教師あり学習」。
この形式に則ったFine TuningをInstruction Tuningと呼ぶ。
元々生の言語モデルでも基盤モデルっぽい振る舞いあったけれどInstruction Tuningするとメッチャ性能上がる。
小さいLLMでも大きいLLMに勝てることがある。
San et al. MULTITASK PROMPTED TRAINING ENABLES ZERO-SHOT TASK GENERALIZATION. ICLR 2022.
最近は学習データとかモデルのパラメータ数が注目されがちだけど言語モデルが飛躍したのってInstruction Tuningという従来のFine Tuningとは違う、新しい学習概念が出てきたからで、そう考えると次の新しい学習概念 X Tuningが登場した時こそ本当のシンギュラリティが起こるのかもしれない。
元々新たな知識を学習するためのものではない。
Instruction Tuning (IT)は知識を学習するものではなく、Instruction-Responseのスタイルを学習するものなのでこうなるのかなと。通常のファインチューニング(run_clm.py)で知識を与えた後にITを数エポックだけやれば解消すると思います。
分かりやすい。
通常のファインチューニング時のデータは「富士山といえばなすびです」、Instruction Tuning時のデータは「Instruction:富士山といえば? Output:なすびです」みたいな具合です。
Instruction Tuningチューニングのデータセットの内容はデータセットによってまちまち。
フォーマットがカッチリ決まっているわけではないはず(というのもフォーマット揃えなくてもできる)。
あくまで情報とこう答えてね、の組があるだけ。
だからこそフォーマット揃えようぜ、みたいな論文があるくらい。
https://scrapbox.io/files/65e803b4482644002668109c.png
元論文だとこんな感じ?
https://scrapbox.io/files/65e8048a9dc5e6002697d4b0.png
このあたりにもデータセットについて書いてる。
Self-Instructと呼ばれる手法があります。(Self-Instruct自体は2022年の12月にarXivに公開されています。)chatGPTのような対話型の大規模言語モデルを用意する際に、大量の指示文と理想的な回答文を人手で用意する必要があります。Self-Instructでは、この指示文と回答文を作る人の能力に依存してモデルの性能が決まってしまうことを指摘しており、これを避けるために言語モデルを用いてこの指示文と回答文を作れないか検討した研究であると理解しています。